//namespace SubhadraSolutions.Sharp.Utils.Collections.Generic
//{
//    using System;
//    using System.Collections;
//    using System.Collections.Generic;
//    public sealed class ReadonlyPsudoList<T> : AbstractDisposable, IList<T>
//    {
//        #region Fields
//        private readonly IEnumerable<T> _enumerable;
//        //private int _knownCount = -1;
//        private readonly int _managedCount = int.MaxValue;
//        private CounterEnumerator<T> _counterEnumertor;
//        #endregion Fields
//        #region Constructors
//        public ReadonlyPsudoList(IEnumerable<T> enumerable)
//        {
//            _enumerable = enumerable;
//        }
//        public ReadonlyPsudoList(IEnumerable<T> enumerable, int count)
//        {
//            _enumerable = enumerable;
//            //_knownCount = pendingCount;
//            _managedCount = count;
//        }
//        #endregion Constructors
//        #region Properties
//        public int Count
//        {
//            get { return _managedCount; }
//        }
//        public bool IsReadOnly
//        {
//            get { return true; }
//        }
//        public int MessagesRedSoFar
//        {
//            get
//            {
//                if (_counterEnumertor != null)
//                {
//                    return _counterEnumertor.RedCount;
//                }
//                return -1;
//            }
//        }
//        #endregion Properties
//        #region Indexers
//        public T this[int index]
//        {
//            get { throw new NotImplementedException(); }
//            set { throw new NotImplementedException(); }
//        }
//        #endregion Indexers
//        #region Methods
//        public void Add(T item)
//        {
//            throw new NotImplementedException();
//        }
//        public void Clear()
//        {
//            throw new NotImplementedException();
//        }
//        public bool Contains(T item)
//        {
//            throw new NotImplementedException();
//        }
//        public void CopyTo(T[] array, int arrayIndex)
//        {
//            throw new NotImplementedException();
//        }
//        protected override void Dispose(bool disposing)
//        {
//            _counterEnumertor.Dispose();
//        }
//        public IEnumerator<T> GetEnumerator()
//        {
//            _counterEnumertor = new CounterEnumerator<T>(_enumerable.GetEnumerator());
//            return _counterEnumertor;
//        }
//        IEnumerator IEnumerable.GetEnumerator()
//        {
//            _counterEnumertor = new CounterEnumerator<T>(_enumerable.GetEnumerator());
//            return _counterEnumertor;
//        }
//        public int IndexOf(T item)
//        {
//            throw new NotImplementedException();
//        }
//        public void Insert(int index, T item)
//        {
//            throw new NotImplementedException();
//        }
//        public bool Remove(T item)
//        {
//            throw new NotImplementedException();
//        }
//        public void RemoveAt(int index)
//        {
//            throw new NotImplementedException();
//        }
//        #endregion Methods
//    }
//}
